namespace book {

  public abstract class Context {
    public void onError(State s, Event e) { do_onError(s,e); }
    public void onEnter(State s) { do_onEnter(s); }
    public void onEvent(Event e) { do_onEvent(e); }
    public void putMessage(string msg) { do_putMessage(msg); }

    protected abstract void do_onError(State s, Event e);
    protected abstract void do_onEnter(State s);
    protected abstract void do_onEvent(Event e);
    protected abstract void do_putMessage(string msg);
  }

}
